Отображение картинок в колонках табличного поля имеет ряд особенностей.
Так, если табличное поле отображает таблицу значений или дерево значений, можно установить необходимой колонке табличного поля колонку картинки. Для этого необходимо в палитре свойств в свойстве "Данные картинки" колонки табличного поля указать имя колонки картинки(при этом соответствующая колонка автоматически добавится в таблицу или дерево значений), а в свойстве "Картинки строк" указать картинку - коллекцию, содержащую все необходимые картинки. Стоит отметить, что картинки, составляющие коллекцию, должны быть расположены горизонтально и иметь размер 16 x 16 точек. Далее, при заполнении таблицы значений или дерева значений необходимо в колонке картинки установить индекс картинки в этой коллекции. Приведенный ниже пример показывает, как отобразить картинки в табличных полях, отображающих таблицу и дерево значений. В этом примере используется два табличных поля, каждое из табличных полей содержит по одной колонке - колонке картинки. Первое из них отображает таблицу значений (реквизит ТЗ) , а второе дерево значений (реквизит ДЗ).
Заполнение источников данных происходит при обработке события ПередОткрытием() формы:
Копировать в буфер обменаПроцедура ПередОткрытием(Отказ, СтандартнаяОбработка) Перем Стр, Стр1; // Заполнение таблицы значений Для Сч = 0 по 6 Цикл Стр = ТЗ.Добавить(); Стр.Картинка = Сч; КонецЦикла; // Заполнение дерева значений Для Сч = 0 по 6 Цикл Стр = ДЗ.Строки.Добавить(); Стр.Картинка = Сч; Для Сч1 = 0 по 2 Цикл Стр1 = Стр.Строки.Добавить(); Стр1.Картинка = 1; КонецЦикла; КонецЦикла; КонецПроцедуры
Также можно связать данные картинки колонки табличного поля с колонкой таблицы значений, содержащей собственно картинку. Для этого необходимо при заполнении таблицы значений присваивать картинки соответствующей колонке. Затем связать колонку таблицы значений с колонкой табличного поля, отображающей картинку. В приведенном ниже примере используется табличное поле ТабличноеПоле1 содержащее одну колонку (Колонка1), отображающую картинку.
Заполнение таблицы значений происходит при обработке события формы ПередОткрытием(). Сначала в таблицу значений (реквизит ТЗ) добавляется колонка картинки (Картинка), затем происходит заполнение таблицы значений. В конце осуществляется привязка колонки таблицы значений к колонке табличного поля. Для этого используется свойство ДанныеКартинки колонки табличного поля.
Копировать в буфер обменаПроцедура ПередОткрытием(Отказ, СтандартнаяОбработка) Перем Стр; ТЗ.Колонки.Добавить("Картинка"); // Заполнение таблицы значений Для Сч = 0 по 10 Цикл Стр = ТЗ.Добавить(); Если Сч % 2 = 0 Тогда Стр.Картинка = БиблиотекаКартинок.Справка; Иначе Стр.Картинка = БиблиотекаКартинок.Важно; КонецЕсли; КонецЦикла; ЭлементыФормы.ТабличноеПоле1.Колонки.Колонка1.ДанныеКартинки = "Картинка"; КонецПроцедуры
Существует также другой способ отображения картинок в табличном поле. Для этого необходимо использовать событие табличного поля ПриВыводеСтроки(). Этот способ подходит для табличных полей, отображающих как динамические списки так и статические данные. При использовании данного способа картинку необходимо устанавливать при обработке события ПриВыводеСтроки(). Приведенный ниже пример показывает типичное применение этого способа. В этом примере используется табличное поле, отображающее таблицу значений. Табличное поле содержит две колонки: колонку картинки (Колонка1) и колонку данных (Колонка2).
Таблица значений заполняется при обработке события ПередОткрытием() формы:
Копировать в буфер обменаПроцедура ПередОткрытием(Отказ, СтандартнаяОбработка) Перем Стр; // Заполнение таблицы значений Для Сч = 0 по 10 Цикл Стр = ТЗ.Добавить(); Стр.Колонка2 = Сч; КонецЦикла; КонецПроцедуры
Картинки для первой колонки устанавливаются при обработке события ПриВыводеСтроки(). Следует заметить, что в приведенном примере для демонстрации возможностей используются два метода установки картинки: используя свойство ИндексКартинки отображаемой ячейки и используя метод УстановитьКартинку().
Копировать в буфер обменаПроцедура ТабличноеПоле1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) Если ДанныеСтроки.Колонка2 = 0 Тогда // Установка картинки через метод УстановитьКартинку. Используется картинка. // из библиотеки картинок ОформлениеСтроки.Ячейки.Колонка1.УстановитьКартинку(БиблиотекаКартинок.Важно); Иначе // Установка картинки из коллекции. Используется индекс картинки в коллекции. ОформлениеСтроки.Ячейки.Колонка1.ИндексКартинки = ДанныеСтроки.Колонка2 % 10; ОформлениеСтроки.Ячейки.Колонка1.ОтображатьКартинку = истина; КонецЕсли; КонецПроцедуры